package Test2;

import java.util.Arrays;
import java.util.Scanner;

public class Test {

        public static String lengthOfLongestSubstring(String s) {
            //查找字符串中长度最长的子串
            if (s.equals("")) {
                return null;
            }
            char []ch=s.toCharArray();
            int p1=0;//头指针
            int p2=1;//尾指针
            int sum=1;//计算长度
            int count=1;//计算最长长度
            int head=0;
            boolean p=false;
            while (p2< ch.length) {
                while (p2<ch.length&&ch[p1]!=ch[p2]) {
                    sum++;
                    p=false;
                    for (int i = p1; i < p2; i++) {//遍历这个子串有没有和这个p2下标对应的原素相同的部分
                        if (ch[i]==ch[p2]) {//当元素相同时
                            p1=i+1;//将p1改为相同的后一个元素的下标
                            p=true;
                            if(p2==p1) //当他们两个一样时，p2++,
                            {
                                p2++;
                            }
                            sum=p2-p1;
                            p2--;    //只要进入这个判断一定会退出这个循环
                            p1--;    //这里减减，后面再加加等于没变
                            break;
                        }
                    }
                    if (count<sum) {//求最长的长度
                       head=p1;
                        count=sum;
                    }
                    if (!p) {//当p为假时p2右移
                        p2++;
                    } else if (p) {//当p为真时退出循环
                        break;
                    }
                }
                p2++;//当p2和p1对应的元素相同时，p2++
                p1++;//这里加加//防止一开始字符就相同
            }
            return s.substring(head,head+count);
        }

    public static void main(String[] args) {
        String name = "ohvhjdml";
        System.out.println(lengthOfLongestSubstring(name));
    }
    public static void merge(int A[], int m, int B[], int n) {

        int p= A.length-1;
        while (m!=0&&n!=0) {
            if (A[m-1]>B[n-1]) {
                A[p]=A[m-1];
                m--;
            }else {
                A[p]=B[n-1];
                n--;
            }
            p--;
        }
        while (n!=0) {
            A[p]=B[n-1];
            p--;
            n--;
        }
    }

    public static void main1(String[] args) {
        int []array1={1,0,0,0,0,0,0,0};
        int []array2={1,1,2,3,6,7,8};
        merge(array1,1,array2,array2.length);
        System.out.println(Arrays.toString(array1));
    }


}
